package cn.bonoon.core;

import cn.bonoon.kernel.events.BaseEvent;

/**
 * <pre>
 * 属于系统运行时所需要的配置参数信息
 * 
 * 配置对象可以指定有效范围，使用注解{@link }，如：
 * 全局配置-只要分配了权限，则可以修改全局的配置，修改后所有用户的配置信息将改变
 * 域配置-只影响相同域的配置
 * 私有配置(默认)-只针对当前登录的用户有效
 * 
 * 不允许同时拥有两种或以上的有效范围
 * </pre>
 * @author jackson
 * 
 */
public interface ConfigService {
	/**
	 * <pre>
	 * 从数据库把配置对象读取出来；
	 * 
	 * 如果指定的config的对象为null，则无法读取配置对象
	 * </pre>
	 * @param oper
	 */
	Object read(BaseEvent event);
	
	Object read(BaseEvent event, Class<?> configClass);
	
	/**
	 * <pre>
	 * 把配置对象写入到数据库中；
	 * 
	 * 如果配置对象为null，则不改变任何内容
	 * </pre>
	 * @param oper
	 * @param config
	 */
	void write(BaseEvent event)throws Exception;
}
